iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 7
0
自我挑戰組

TDD - 紅燈,綠燈,重構,30天 TDD之路有你有我系列 第 7

Day7. 找黃金囉!-Codewars_Main in the west

  • 分享至 

  • xImage
  •  

今天一樣從Codewars的8kyu開始唄。

這一次的題目是找最新出現的8kyu的一題,前5天的練習應該都會是8kyu啦ˊ_>ˋ
後面的話就會7以下惹,慢慢開始增難了,各位客官慢慢看囉(好像根本沒有客官QAQ

https://ithelp.ithome.com.tw/upload/images/20171224/201072095m3GYs5By3.png

今天的題目需求很簡單,他把User Story寫得啵棒好,今天有一個人類,他想要在河裡挖掘金子,對金子,ㄐㄧㄣ子不是ㄐㄧㄥ….沒..沒事

如果他今天挖到了就return true,如果沒挖到就return false
輸入會是string陣列。為甚麼我會知道呢? 因為他的題目框架長這樣

https://ithelp.ithome.com.tw/upload/images/20171224/20107209Udmd3e8UuK.png

那我怎麼知道他的輸入會是甚麼樣子的呢?
實際上我們需要去問PO釐清需求,不過這次我們沒有PO所以我就看了他的test case。長這樣

https://ithelp.ithome.com.tw/upload/images/20171224/20107209ne0Olbb3iR.png

接下來要拆解需求啦,需求看起來是只要陣列中有gold這個字串就return true
如果沒有就return false,所以需求只有一個

  1. 陣列中找尋gold字串

接下來開始實作吧! 把專案創建好之後,就把第一個測試案例名稱寫出來吧!
我們要從最簡單的第一步開始,老樣子,如果覺得一開始有點卡卡的就可以加入3A原則的註解唷!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209u0uhkzs1uK.png

接下來就可以寫Code,一開始Test Case中的Code會長這樣

https://ithelp.ithome.com.tw/upload/images/20171224/20107209uNRAJaEtXS.png

而Production Code 就長這樣

https://ithelp.ithome.com.tw/upload/images/20171224/201072090ufIMwAIo8.png

老樣子,跑個測試,沒過很正常,commit一下

https://ithelp.ithome.com.tw/upload/images/20171224/20107209uMSZKPdMwn.png

接下來把Production Code改一下,用最小步伐讓Test Case Pass吧!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209vfWEF3YMTv.png

接下來跑個測試,PASS!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209lOG3QeoT7V.png

來寫個第二個測試案例唄

https://ithelp.ithome.com.tw/upload/images/20171224/20107209kTlU3cZi27.png

接下來跑一下測試吧,一定是紅燈!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209QUBTIfyK0y.png

每一動之前就是commit一下
接下來用最簡單的方式改Production Code吧!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209NyvEMNdbwD.png

這一次我們用Linq的方式解決他,然後跑了一次測試,OK,Pass,現在來Commit一下吧

https://ithelp.ithome.com.tw/upload/images/20171224/20107209ER4boMDPlF.png

這段Code實在是看得很不順眼,所以先來Refactor一下唄!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209KoJv5IbVnF.png

看了看這段Code,如果你知道C#的一個新的功能就知道他可以變成這個樣子

https://ithelp.ithome.com.tw/upload/images/20171224/20107209e9XgzKTFkD.png

把Production Code完成之後,接下來審視一下test code吧!
因為test code 也是我們的code 之後維護還是需要看他的!

Tips: 如果你有Resharper 那就用Ctrl +R + I讓他inline解決吧XD

https://ithelp.ithome.com.tw/upload/images/20171224/201072097vlGh1F8e1.png

改完test code之後
跑一下測試,all pass之後就commit唄

接下來寫第三個test case吧!
現在看了看我的測試案例,覺得心裡毛毛的,為甚麼?
因為我們沒有測試輸入stone時會發生什麼事情
也沒有輸入多個stone含有gold,也沒有輸入全都是gold的情形,於是就來補一下test cases吧!

https://ithelp.ithome.com.tw/upload/images/20171224/201072096RnG3ENV2Z.png

跑過測試都All Pass 之後就再Commit一次吧!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209bgYoDTP59Y.png

然後再Codewars上提交! Pass!!

https://ithelp.ithome.com.tw/upload/images/20171224/20107209q646CNonOH.png

通過!
老樣子我最喜歡的部分就是去看看別人寫這題寫得如何XD

https://ithelp.ithome.com.tw/upload/images/20171224/20107209sOcrs0TiLF.png

啊….對欸,我寫得…..好像又長了一點,看來我對C#新功能還不那麼熟悉呢QAQ

今天這一個題目真的太簡單了 O_O|||
改成明天開始找7kyu的題目好了,不知道會不會比較多一點點的需求XD
(我才不會說是因為題目越難我寫的時間就要越久呢~哼
(結果寫完打自己一開始說要寫五天8kyu的臉XD

git url :
https://github.com/SQZ777/Codewars_MainInTheWest
有興趣來看一下commit 紀錄吧XD

今天在煮飯的時候突然發現好像可以用影片的方式就可以偷懶了
啊不是 我是說 可以用比較清楚的方式 摁 對
可能找一天試試
不然貼圖片好累喔...

下一題,明天見!


上一篇
Day6. 繼續牛刀小試的概念-Codewars_Fake Binary
下一篇
Day8.我們都是獨立的個體!-Codewars_All Unique
系列文
TDD - 紅燈,綠燈,重構,30天 TDD之路有你有我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言